package cn.lg.soar.activiti.service;

import cn.lg.soar.activiti.api.model.*;

import java.util.Collection;
import java.util.List;

/**
 * @author luguoxiang
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface ActivitiService {

	/**
	 * 启动流程
	 * @param dto
	 * @return
	 */
	ProcessInstanceDTO startProcess(StartProcessDTO dto);

	/**
	 * 完成任务
	 * @param dto
	 */
	void completeTask(CompleteTaskDTO dto);

	/**
	 * 查询任务列表
	 * @param processKey 流程key
	 * @param businessIds 业务id
	 * @param candidates 候选人，用户：username，角色：R:roleCode，组织机构：O:orgId
	 * @return
	 */
	List<TaskDTO> tasks(String processKey, Collection<String> businessIds, Collection<String> candidates);

	/**
	 * 历史任务（审批日志）
	 * @param processKey 流程key
	 * @param businessId 业务id
	 * @return
	 */
	List<HistoryTaskDTO> historyTasks(String processKey, String businessId);

}
